/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.util;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.util.Map;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * Classe usada para facilitar a geração de Relatório a partir da aplicação
 *
 * @author marcosnatanpacheco
 */
public class RelatorioHelper {
    // Serviço

    public static byte[] gerarRelatorio(String path, Map<String, Object> parametros, Connection conexao) throws FileNotFoundException, JRException {
        // Montando o objeto JasperReport
        JasperReport rel = montarRelatorio(path);

        // Montando o objeto JasperPrint
        JasperPrint relCompilado = carregarRelatorio(rel, parametros, conexao);

        // Exportando o objeto JasperPrint para um array de bytes
        return JasperExportManager.exportReportToPdf(relCompilado);
    }

    // Métodos privados
    private static JasperReport montarRelatorio(String caminho) throws FileNotFoundException, JRException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(caminho));
        return (JasperReport) JRLoader.loadObject(bis);
    }

    private static JasperPrint carregarRelatorio(JasperReport relatorio, Map<String, Object> parametros, Connection conexao) throws JRException {
        return JasperFillManager.fillReport(relatorio, parametros, conexao);
    }

    private static byte[] exportarRelatorio(JasperPrint relatorio) throws JRException {
        return JasperExportManager.exportReportToPdf(relatorio);
    }
}
